#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
#include <QMessageBox>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QPainter>

#include "weatherData.h"
#include "citytocitycode.h"


#define INCREMENT 3         //温度升高或降低y轴增量
#define POINT_RADIUS 3      //绘制温度曲线点的半径

#define OFFSET_X 19  //离温度曲线平均值达的x坐标
#define OFFSET_Y 12  //离温度曲线平均值达的x坐标


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void mousePressEvent(QMouseEvent *event) override;      //重写鼠标点击事件函数
    void mouseMoveEvent(QMouseEvent *event) override;       //重写鼠标移动事件函数

    bool eventFilter(QObject* watched, QEvent* event) override;      //重写事件过滤

    void getWeatherInfo(QString cityName);                  //获取天气数据

    void parseJson(QByteArray& byteArray);                  //解析JSON数据

    void updateUI();                                        //更新UI界面

    void paintHightTemCure();                               //绘制高温曲线
    void paintLowTemCure();                                 //绘制低温曲线

private slots:
    void on_pushButton_quit_clicked();          //关闭UI界面
    void onQuitActTriggered();                  //菜单被点击后的处理

    void on_pushButtonSearch_clicked();         //搜索按钮

public slots:
    void readHttpReply(QNetworkReply *reply);                       //新建一个网络请求获取的槽函数

private:
    Ui::MainWindow *ui;
    QMenu *quitMenu;                            //创建一个菜单指针
    QAction *quitAct;                           //定义一个动作
    QPoint moffset;                             //窗口移动时，鼠标与窗口左上角的偏移值

    QNetworkAccessManager *NetAccessManger;        //声明一个网络请求对象

    bool closePOPWindow();                      //关闭窗口的弹窗

    Today today;                                //定义一个今天天气数据对象
    Day day[7];                                 //定义未来几天天气数据对象

    QList<QLabel *> weekList;                   //星期
    QList<QLabel *> dateList;                   //日期

    QList<QLabel *> weatherList;                        //天气
    QList<QLabel *> weatherIconList;                   //天气图标

    QList<QLabel *> airPollutionList;                   //空气污染指数

    QList<QLabel *> windPowerList;                      //风力
    QList<QLabel *> windDirectionList;                       //风向

    //图标
    QMap<QString,QString> weatherIconMap;

};
#endif // MAINWINDOW_H
